#ifndef AUGPOURCENT_H
#define AUGPOURCENT_H

#include "BaseDialog.h"

#include <vector>

#include "StatusCode.h"

class QSpinBox;
class QGroupBox;
class QLabel;
class QLCDNumber;
class Classe;

/**
 * Cette classe gère l'augmentation des talents du type talent de
 * Voleur, c'est à dire des compétences de classe associées à un
 * pourcentage.
 *
 * La liste des compétences est récupérée et une liste de QSpinBox est
 * créée pour assurer la progression des compétences. Ensuite on
 * récupère le nombre de points que l'on peut dépenser.
 *
 * @author Johan "Solo" Luisier
 */
class AugPourcent : public BaseDialog
{
  Q_OBJECT
 public:
  AugPourcent(Classe* classe, const bool& lvlUp = true, QWidget *parent = 0);
  AugPourcent(const AugPourcent& pour);
  ~AugPourcent();
  StatusCode pointsRepartis();
 private:
  /**
   * Cette variable sert lors de la détermination du nombre de points
   * à dépenser : si \e false, alors on vient de passer un niveau, si
   * \e true, on est au stade de création du personnage.
   */
  bool creation;
  /**
   * Pointeur sur la Classe dont on veut modifier les scores.
   */
  Classe *mClasse;
  unsigned int dimension, /**< Nombre de compétences associées à un pourcentage */
    total /**< Somme des pourcentages initiaux */;
  /**
   * Contient les "légendes", càd les noms des compétences à modifier.
   */
  std::vector<QLabel*>   labels;
  /**
   * Contient les nouvelles valeurs, sous forme de QSpinBox. Le
   * minimum de chaque QSpinBox est fixé à la valeur initiale de la
   * compétence associée, la valeur maximal est 99.
   */
  std::vector<QSpinBox*> valeurs;
  /**
   * Contient les valeurs initiales de chaque compétence.
   */
  std::vector<unsigned int> anciennesVal;
  /**
   * Pointeur sur la QGroupBox des compétences à améliorer.
   */
  QGroupBox* boite;
  /**
   * Affichage du nombre de points restant à dépenser.
   */
  QLCDNumber * nbrPP;
  void prepareAffichage();
  /**
   * Nombre de points à dépenser.
   */
  int PP;
 private:
  void prepareBoutons();
 private slots:
  void changerValeur();
  void fermer();
};

#endif // AUGPOURCENT_H
